home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1995 October
/
EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso
/
Enigma Amiga CD
/
Listati
/
63-Marzo-esempio.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-09-02
|
5KB
|
217 lines
/*
Esempio di generazione primitive grafiche elementari
Realizzato da Silvio Umberto Zanzi per EnigmA Amiga Run
* Source machine generated by GadToolsBox V2.0b
* which is (c) Copyright 1991-1993 Jaba Development
*
* GUI Designed by : -- Unnamed --
Quanto segue, fino al blocco main(), è stato realizzato in modo automatico
per mezzo del costrutture di interfacce utente GadToolsBox.
Al sorgente originale sono state eseguite solo marginali modifche al fine
di migliorare la leggibilità.
Nota:
Vengono usate le metodologie di programmazione introdotte dalla versione
2.x del sistema operativo.
*/
#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/classes.h>
#include <intuition/classusr.h>
#include <intuition/imageclass.h>
#include <intuition/gadgetclass.h>
#include <libraries/gadtools.h>
#include <graphics/displayinfo.h>
#include <graphics/gfxbase.h>
#include <graphics/gfxmacros.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/graphics_protos.h>
#include <clib/utility_protos.h>
#include <clib/dos_protos.h>
#include <string.h>
#include "esempio.h"
struct Screen *Scr = NULL;
APTR VisualInfo = NULL;
struct Window *Finestra_di_lavoroWnd = NULL;
UWORD Finestra_di_lavoroLeft = 0;
UWORD Finestra_di_lavoroTop = 12;
UWORD Finestra_di_lavoroWidth = 640;
UWORD Finestra_di_lavoroHeight = 233;
UBYTE *Finestra_di_lavoroWdt = (UBYTE *)"Finestra di lavoro";
struct TextAttr topaz8 = {
( STRPTR )"topaz.font", 8, 0x00, 0x01 };
UWORD DriPens[] = {
(unsigned short)~0 };
int SetupScreen( void )
{
if ( ! ( Scr = OpenScreenTags( NULL, SA_Left, 0,
SA_Top, 0,
SA_Width, 640,
SA_Height, 256,
SA_Depth, 2,
SA_Font, &topaz8,
SA_Type, CUSTOMSCREEN,
SA_DisplayID, PAL_MONITOR_ID|HIRES_KEY,
SA_Pens, &DriPens[0],
SA_Title, "EnigmA Amiga Run - esempio primitive grafiche elememtari",
TAG_DONE )))
return( 1L );
if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
return( 2L );
return( 0L );
}
void CloseDownScreen( void )
{
if ( VisualInfo ) {
FreeVisualInfo( VisualInfo );
VisualInfo = NULL;
}
if ( Scr ) {
CloseScreen( Scr );
Scr = NULL;
}
}
int OpenFinestra_di_lavoroWindow( void )
{
UWORD offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
if ( ! ( Finestra_di_lavoroWnd = OpenWindowTags( NULL,
WA_Left, Finestra_di_lavoroLeft,
WA_Top, Finestra_di_lavoroTop,
WA_Width, Finestra_di_lavoroWidth,
WA_Height, Finestra_di_lavoroHeight + offy,
WA_IDCMP, IDCMP_REFRESHWINDOW,
WA_Flags, WFLG_DRAGBAR|WFLG_SMART_REFRESH|WFLG_GIMMEZEROZERO|WFLG_ACTIVATE|WFLG_RMBTRAP,
WA_Title, Finestra_di_lavoroWdt,
WA_ScreenTitle, "Enigma Amiga Run - esempio primitive grafiche elementari",
WA_CustomScreen, Scr,
TAG_DONE )))
return( 4L );
GT_RefreshWindow( Finestra_di_lavoroWnd, NULL );
return( 0L );
}
void CloseFinestra_di_lavoroWindow( void )
{
if ( Finestra_di_lavoroWnd ) {
CloseWindow( Finestra_di_lavoroWnd );
Finestra_di_lavoroWnd = NULL;
}
}
/*
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
( Fine codice GadToolsBox )
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
*/
void fine(void); /* prototipo per funzione di uscita */
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
struct RastPort *RastPort;
void main(void)
{
short cont;
/*
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
( Apertura librerie e impostazione schermo e finestre )
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
*/
IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library",36);
if (!IntuitionBase) fine();
GfxBase = (struct GfxBase *)OpenLibrary("graphics.library",36);
if (!GfxBase) fine();
SetupScreen();
OpenFinestra_di_lavoroWindow();
RastPort=Finestra_di_lavoroWnd->RPort; /* prelievo indirizzo della RastPort */
/*
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
( Rendering primitive grafiche )
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
*/
/*
Generiamo una sequenza di punti
*/
for(cont=0;cont<25;++cont) WritePixel(RastPort,15+cont,15+cont);
/*
Generiamo ora una linea orizzontale lunga 125 pixel
*/
Move(RastPort, 50,10);
Draw(RastPort, 175,10);
/*
Generiamo un'elisse
*/
DrawEllipse(RastPort,200,200,85,30);
/*
Generiamo quattro cerchi ognuno con un diverso colore
*/
for(cont=0;cont<=3;++cont)
{
SetAPen(RastPort,cont);
DrawCircle(RastPort,100+cont*10,100+cont*10,55);
}
/*
Aspettiamo 4 secondi...
*/
Delay(200);
/*
...e usciamo dal programma
*/
fine();
}
/*
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
( Funzioni )
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
*/
void fine(void)
{
if (GfxBase) CloseLibrary((struct Library *)GfxBase);
if (IntuitionBase) CloseLibrary((struct Library *)IntuitionBase);
CloseFinestra_di_lavoroWindow();
CloseDownScreen();
exit(NULL);
}